import requests
from bs4 import BeautifulSoup
import pandas as pd
import os
import datetime
from concurrent.futures import ThreadPoolExecutor
import openpyxl


# Функция для извлечения данных из страницы
def parse_page(url):
    response = requests.get(url)
    content = response.content
    soup = BeautifulSoup(content, 'html.parser')

    name = soup.find('h1', class_='text-center h3').text.strip()

    site_link_tag = soup.find('span', class_='fa-globe')
    site_link = site_link_tag.find_next('a')['href'] if site_link_tag and site_link_tag.find_next(
        'a') else "Ссылка на сайт не найдена"

    address_tag = soup.find('span', class_='fa-home')
    address = address_tag.find_next(string=True).strip() if address_tag else "Адрес не найден"

    phone = soup.find('span', class_='fa-phone').find_next('a').text.strip() if soup.find('span',
                                                                                          class_='fa-phone') else "Номер телефона не найден"

    return {'name': name, 'site_link': site_link, 'address': address, 'phone': phone}


# Чтение ссылок из файла
with open('links.txt', 'r') as file:
    links = file.readlines()

data_list = []


def process_link(link):
    print(f"Извлечение данных из {link.strip()}...")
    data = parse_page(link.strip())
    print('Наименование:', data['name'])
    print('Ссылка на сайт:', data['site_link'])
    print('Адрес:', data['address'])
    print('Номер телефона:', data['phone'])
    print()
    return data


with ThreadPoolExecutor() as executor:
    data_list = list(executor.map(process_link, links))

df = pd.DataFrame(data_list)

timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
file_name = f'banket_data_{timestamp}.xlsx'
file_path = os.path.join('C:\\', 'Users', 'ogrigoryev', 'Desktop', 'Base', 'banket.kz', file_name)

df.to_excel(file_path, index=False)
print(f"Данные сохранены в файл {file_path}")
